package Serialization;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import Passager.Passager;
import Serveur.Serveur;

public class PassagerXML {

	private Serveur serv;

	private static Element racine;	
	private static org.jdom.Document document;

	/**
	 * Constructeur créeant la racine et le document xml.
	 */
	public PassagerXML(Serveur serv)
	{
		this.serv=serv;
		racine = new Element("Passager");	
		document = new Document(racine);
	}

	/**
	 * méthode pour enregistrer le fichier xml	
	 * @param document
	 * @param fichier
	 */

	public void enregistre(Document document, String fichier)
	{	
		try
		{

			XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());

			sortie.output(document, new FileOutputStream(fichier));
		}
		catch (java.io.IOException e){}
	}

	/**
	 * méthode pour lire les fichiers xml 
	 * @param fichier
	 * @throws Exception
	 */


	public void lireFichier(String fichier) throws Exception
	{
		SAXBuilder sxb = new SAXBuilder();
		document = sxb.build(new File(fichier));
		racine = document.getRootElement();
	}
	/**
	 * Permet de créer le fichié xml des passagers à partir de la liste du serveur
	 * @param Passager passager
	 */
	public void XmlPassager(Passager passager)
	{
		try{
			//racine.removeChild("Passager"+passager.getIdPassager());			
			Element passager1 = new Element("Passager"+passager.getIdPassager());

			racine.addContent(passager1);		

			Element idPassager=new Element("IdPassager");
			idPassager.setText(passager.getIdPassager()+"");
			passager1.addContent(idPassager);

			Element nom = new Element("Nom");
			nom.setText(passager.getNom());
			passager1.addContent(nom);

			Element prenom = new Element("Prenom");
			prenom.setText(passager.getPrenom());
			passager1.addContent(prenom);

			enregistre(document,"Passager.xml");
		}
		catch(Exception e){System.out.println("pbxml");};
	}

	public void XmlPassager(ArrayList<Passager> listePassager)
	{		
		clearXml();
		
		for(int i =0; i<listePassager.size();i++)
		{
			XmlPassager(listePassager.get(i));
		}

	}
	
	/**
	 * Supprimer les elements pre-existants du xml
	 */
	public void clearXml(){
		List listElements = racine.getChildren();
		ArrayList<Element> elements = new ArrayList<Element>();
		for (int i = 0; i<listElements.size(); i++)
		{
			//Element temp = (Element) listElements.get(i);
			elements.add((Element) listElements.get(i));
			//racine.removeChild(temp.getName());
		}
		for(Element aSupprimer : elements){
			racine.removeChild(aSupprimer.getName());
		}		
	}

	public ArrayList<Passager> creatPassager()
	{
		try {
			this.lireFichier("Passager.xml");
			List listPassager = racine.getChildren();
			ArrayList<Passager> listePassager = new ArrayList<Passager> ();
			for (int i = 0; i<listPassager.size(); i++)
			{
				Element temp = (Element) listPassager.get(i);

				Integer idPassager = Integer.parseInt(temp.getChild("IdPassager").getText());
				String nom = temp.getChild("Nom").getText();
				String prenom = temp.getChild("Prenom").getText();
				Passager passagerTemp = new Passager (serv,idPassager,nom,prenom);
				listePassager.add(passagerTemp);
			}
			return listePassager;
		}
		catch(Exception e){System.out.println("pbCreatP");return null;}
	}
}
